--[[ 基础的api逻辑处理类 ]]
local _loc = class("BaseHandler")
--======================================
--default params
local d = Ding
local ngx = ngx
local json = require("cjson")
local Logger = d.Logger
local LN = d.LN
--======================================

function _loc:ctor(name, svr, apimap)
    self._name = string.upper(name)
    self._svr = svr
    self._defdata = {}
    self._apimap = apimap
end

--判断是否有api
--@apiname string api名字
function _loc:_is_apifunc(apiname)
    return self._apimap[apiname] ~= nil
end

--api逻辑执行
--@apiname string api名字
--@...     table  api参数
function _loc:set_datadefault(defdata)
    self._defdata = defdata
end

--获取handle的apimap
function _loc:apimap()
    return self._apimap
end

--获取父svr
function _loc:svr()
    return self._svr
end

--handler名称
function _loc:name()
    return self._name
end

--逻辑正常返回值
function _loc:doret(tbret)
    self._defdata["r"] = 0
    self._defdata["data"] = tbret or {}
    local ret = json.encode(self._defdata)
    Logger:info("%s handler return the val->%s", self:name(), ret)

    ngx.print(ret)
end

--自定义错误返回
function _loc:doerror(errcode, desc)
    self._defdata["r"] = errcode
    self._defdata["desc"] = desc
    local ret = json.encode(self._defdata)

    Logger:info("%s handler raise the err->%s", self:name(), ret)
    ngx.print(ret)
end

--返回通用错误
function _loc:doalert(errname, idx)
    self._defdata["r"] = idx
    self._defdata["desc"] = LN.k(errname, idx) 
    local ret = json.encode(self._defdata)

    Logger:info("%s handler raise the err->%s", self:name(), ret)
    ngx.print(ret)
end

return _loc
